@Allure
2年前 提问
1个回答

常见文件上传验证的绕过方式有什么

帅末
2年前

常见文件上传验证的绕过方式有:

  • JavaScript验证绕过:JavaScript验证就是所谓的客户端验证,也是最脆弱的一种验证。直接修改数据包或禁用JavaScript即可绕过。

  • content-type验证绕过:content-type验证,最常见的是判断content-type是否为image/gif。对于这种验证直接修改数据包中的content-type为image/gif即可。

  • 黑名单检测绕过:黑名单检测是常见的一种上传验证方式,不允许上传黑名单中存在的扩展名,其安全性低于白名单检测,对其的绕过方式也远多于白名单检测。

  • 白名单检测绕过:白名单检测安全性远高于黑名单检测,仅允许上传白名单所允许的几种扩展名,因此黑名单中的大小写混淆、特殊的扩展名等绕过方式对白名单检测均无效。但仍可以用截断上传、解析漏洞、特别文件名构造对其进行绕过。

  • 对危险扩展名POST检测的绕过:在开发中,为了方便维护和更新,会先对扩展名进行验证,如果上传文件的扩展名为可执行脚本,便会对其POST的数据进行检测,如果存在恶意代码就会禁止上传。而对于这类上传检测的绕过大致有这几种思路,一是利用变种木马绕过其检测;二就是用包含文件对其进行绕过。

  • 服务器目录限制的绕过:有的Web应用程序本身对扩展名并没有什么验证,而是在服务器上对上传目录允许上传的文件扩展名进行限制。而对于这类防御方法,如果能控制上传路径即能成功绕过了。